package com.hmall.item.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hmall.common.dto.PageDTO;
import com.hmall.item.mapper.ItemMapper;
import com.hmall.item.pojo.Item;
import com.hmall.item.service.IItemService;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ItemService extends ServiceImpl<ItemMapper, Item> implements IItemService {

    /**
     * 分页
     *
     * @param page
     * @param size
     * @return
     */
    @Override
    public PageDTO<Item> listByPage(Integer page, Integer size) {
        // 构建分页条件
        Page<Item> iPage = new Page<>(page, size);
        // 构建查询条件
        LambdaQueryWrapper<Item> query = new LambdaQueryWrapper<>();
        // 按照最后修改时间倒排序
        query.orderByDesc(Item::getUpdateTime);
        Page<Item> itemPage = this.page(iPage, query);
        // 构建响应对象
        PageDTO<Item> result = new PageDTO<>(itemPage.getTotal(), itemPage.getRecords());
        return result;
    }

    /**
     * 更新库存
     *
     * @param id
     * @param num
     */
    @Override
    public void reduceStock(Long id, Integer num) {
        LambdaUpdateWrapper<Item> update = new LambdaUpdateWrapper<>();
        update.eq(Item::getId, id);
        update.setSql("stock = stock -" + num);
        this.update(update);
        // 模拟报错
        //int i = 1 / 0;
    }
}
